package util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import negocio.ListaDeRodamientos;
import negocio.Proveedor;
import negocio.documentacion.SolicitudCotizacion;
import negocio.items.ItemLista;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.persistence.FilePersistenceStrategy;
import com.thoughtworks.xstream.persistence.PersistenceStrategy;
import com.thoughtworks.xstream.persistence.XmlArrayList;

public class XMLUtil {
	private static XMLUtil instancia;
	private XStream xml;
	
	private XMLUtil(){
		xml = new XStream(new DomDriver());
		this.setAlias();
		this.registrarConverters();
	}
	
	public static XMLUtil obtenerInstancia(){
		if(instancia==null)
			instancia=new XMLUtil();
		return instancia;
	}
	
	private void setAlias(){
		xml.alias("listaDeRodamientos", ListaDeRodamientos.class);
		xml.alias("proveedor", Proveedor.class);
		xml.alias("itemListaDeRodamientos", ItemLista.class);
	}
	
	public void registrarConverters(){
		xml.registerConverter(new ConvertidorFechaXML(new Locale("es", "ar")));
		xml.addImplicitCollection(ListaDeRodamientos.class, "items");
	}
	
	public void generarListasDeRodamientos(List<ListaDeRodamientos> listaDeRodamientos){
		PersistenceStrategy estrategia = new FilePersistenceStrategy(new File("C:/prueba/ListasDeRodamientos"),xml);
		List listaGuardar = new XmlArrayList(estrategia);
		for(ListaDeRodamientos lista: listaDeRodamientos){
			listaGuardar.add(lista);
		}
	}
	
	public List<ListaDeRodamientos> obtenerListasDeRodamientos(){
		PersistenceStrategy estrategia = new FilePersistenceStrategy(new File("C:/prueba/ListasDeRodamientos"),xml);
		XmlArrayList persistentList = new XmlArrayList(estrategia);
		List<ListaDeRodamientos> list = new ArrayList(persistentList);
		return list;
	}
}
